package cn.ygh.bbo.system.bean;
import cn.ygh.bbo.common.annotation.Excel;
import cn.ygh.bbo.framerwork.core.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;

import java.util.*;
import lombok.Data;
import org.apache.commons.lang3.builder.*;
/**
* 描述：登陆日志
* @author ygh
*/
@TableName("login_log")
@Data
public class LoginLog extends BaseEntity {
    /*数据库字段——start*/
    /**
    * 序号
    */
    @Excel("序号")
    @TableId(type = IdType.AUTO)
    @TableField(value = "id")
    private Integer id;

    /**
    * 用户名
    */
    @Excel("用户名")
    @TableField(value = "username")
    private String username;

    /**
    * 管理员序号
    */
    @Excel("管理员序号")
    @TableField(value = "admin_id")
    private Integer adminId;

    /**
    * Ip
    */
    @Excel("Ip")
    @TableField(value = "ip")
    private String ip;

    /**
    * 创建时间
    */
    @Excel("创建时间")
    @TableField(value = "create_time")
    private Date createTime;


    /*数据库字段——end*/

    /**
    * 默认值设置
    * @return
    */
    public LoginLog def(){
        return this;
    }

     /*构造函数——start*/
    public LoginLog() {
    }

    public LoginLog(Integer id) {
        this.id=id;
    }

    /**
    *构造函数
    */
    public LoginLog(String username,Integer adminId,String ip,Date createTime) {
        this.username=username;
        this.adminId=adminId;
        this.ip=ip;
        this.createTime=createTime;
    }
    /*构造函数——end*/

    /*非数据库字段——start*/
    /**
    * 创建时间开始
    */
    @TableField(exist = false)
    private Date createTimeBeginValue;

    /**
    * 创建时间结束
    */
    @TableField(exist = false)
    private Date createTimeEndValue;

    /*非数据库字段——end*/

    /**
	 * Hash，同所有字段相加判断
	 */
	@Override
	public int hashCode() {
		if(getId()==null){
            return new HashCodeBuilder()
            .append(getUsername())
            .append(getAdminId())
            .append(getIp())
            .append(getCreateTime())
			.toHashCode();
        }
		return new HashCodeBuilder()
			.append(getId())
			.toHashCode();
	}
    /**
	 * 重写，对象是否相同，用ID来判断
	 */
	@Override
	public boolean equals(Object obj) {
		if(!(obj instanceof LoginLog)) {
			return false;
		}
		if(this == obj) {
			return true;
		}
        LoginLog other = (LoginLog)obj;
		return new EqualsBuilder()
			.append(getId(),other.getId())
			.isEquals();
	}
	/**
	 * 转文本
	 */
	@Override
	public String toString() {
		return new ToStringBuilder(this,ToStringStyle.SHORT_PREFIX_STYLE)
			.append(super.toString())
            .append(",Id",getId())
            .append(",Username",getUsername())
            .append(",AdminId",getAdminId())
            .append(",Ip",getIp())
            .append(",CreateTime",getCreateTime())
			.toString();

	}

/*
//精简构造 登陆日志
LoginLog loginLog = new LoginLog(
            username //用户名
            ,adminId //管理员序号
            ,ip //Ip
            ,createTime //创建时间
);
*/
}